package org.eclipsecon.dui.dsl.swt;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.eclipse.emf.ecore.EPackage;
import org.eclipse.jface.text.rules.IPartitionTokenScanner;
import org.openarchitectureware.xtext.AbstractLanguageUtilities;
import org.openarchitectureware.xtext.AbstractXtextEditorPlugin;
import org.openarchitectureware.xtext.XtextFile;
import org.openarchitectureware.xtext.parser.IXtextParser;

import org.eclipsecon.dui.dsl.swt.parser.XtextParser;

public class SwtUtilities extends AbstractLanguageUtilities {

	// enforce eager registration of metamodel
	private static final EPackage EPACKAGE = org.eclipsecon.dui.dsl.swt.MetaModelRegistration.getEPackage();
	
	@Override
	protected IXtextParser internalParse(InputStream inputStream) {
		return new XtextParser(inputStream);
	}

	public String getFileExtension() {
		return "swt";
	}

	public EPackage getEPackage() {
		return EPACKAGE;
	}

	List<String> r = new ArrayList<String>();
	{
		r.add("fgColor");
		r.add("onClick");
		r.add("single");
		r.add("hHint");
		r.add("normal");
		r.add("hSpan");
		r.add("combo");
		r.add("italic");
		r.add("password");
		r.add("push");
		r.add("layoutData");
		r.add("center");
		r.add("bgColor");
		r.add("bold");
		r.add("toggle");
		r.add("vSpan");
		r.add("button");
		r.add("layout");
		r.add("bundle");
		r.add("grid");
		r.add("border");
		r.add("end");
		r.add("template");
		r.add("text");
		r.add("beginning");
		r.add("check");
		r.add("equalWidth");
		r.add("font");
		r.add("fill");
		r.add("class");
		r.add("grabVSpace");
		r.add("label");
		r.add("wMargin");
		r.add("composite");
		r.add("hMargin");
		r.add("default");
		r.add("readOnly");
		r.add("px");
		r.add("multi");
		r.add("radio");
		r.add("gridData");
		r.add("wHint");
		r.add("separator");
		r.add("grabHSpace");
	}
	public List<String> allKeywords() {
		return r;
	}

	protected ClassLoader getClassLoader() {
		return this.getClass().getClassLoader();
	}

	public IPartitionTokenScanner getPartitionScanner() {
		return new GeneratedPartitionScanner();
	}

	@Override
	public AbstractXtextEditorPlugin getXtextEditorPlugin() {
		return SwtEditorPlugin.getDefault();
	}
	
	@Override
	public String getPackageForExtensions() {
		return "org::eclipsecon::dui::dsl::swt";
	}
	
	public XtextFile getXtextFile() {
		return MetaModelRegistration.getXtextFile();
	}
	

}
